package com.xuhao.didi.core.iocore.interfaces;

import java.io.OutputStream;

/**
 * Created by xuhao on 2017/5/16.
 */

public interface IWriter<T extends IIOCoreOptions> {
    /**
     * 初始化
     *
     * @param outputStream 写入
     * @param stateSender 数据
     */
    void initialize(OutputStream outputStream, IStateSender stateSender);

    /**
     * 写入
     *
     * @return 写入的内容
     * @throws RuntimeException 异常
     */
    boolean write() throws RuntimeException;

    /**
     * 连接
     *
     * @param option 泛型
     */
    void setOption(T option);

    /**
     * 数据
     *
     * @param sendable 发送的数据
     */
    void offer(ISendable sendable);

    /**
     * 关闭
     */
    void close();
}
